#include <iostream>
using namespace std;
#define maxn 50005
const int INF = 1<<30;

int L,n,limit;
int x[maxn];

bool check(int length){
	int cmax=0, count=0;
	for(int i=1;i<=n;i++){
		if(x[i]-cmax < length){
			count++;
		}else{
			cmax=x[i];
		}
	}
	if(count <= limit) return true;
	else return false;
}

int main(){
	cin>>L>>n>>limit;
	for(int i=1;i<=n;i++)
		cin>>x[i];
	x[0]=0;
	x[n+1]=L;
	int l=0,r=INF;
	while(r-l>1){
		int mid=(l+r)/2;
		if(check(mid)) l=mid;
		else r=mid;
	}
	if(l<INF-1)
		cout<<l<<endl;
	else
		cout<<L<<endl;
	return 0;
}